/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

import ejb.negocio.UsuarioServiceLocal;
import entidades.Paises;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
//import javax.faces.bean.ManagedBean;
//import javax.faces.bean.RequestScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.ServletContext;
import org.primefaces.event.CloseEvent;

/**
 *
 * @author Pablo
 */
//@ManagedBean(name = "registroControl")
@javax.inject.Named("registroControl")
@SessionScoped

public class RegistroController extends ParentController implements Serializable {

    private String nick;
    private String password;
    private String password_rep;
    private String nombre;
    private String email;
    private Date fechaNac;
    //private String ciudad;
    //private int provincia;
    private Integer nacion;
    private String sexo;
    //private List<SelectItem> provSelect;
    private List<SelectItem> paisSelect;
    private boolean showDialog;
     
    @EJB
    private UsuarioServiceLocal usuario;
    
    /**
     * Creates a new instance of UsuarioController
     */
    public RegistroController() {
        showDialog = false;
       // carga();
    }
    /*
    public String getCiudad() {
        return ciudad;
    }

    public void setCiudad(String ciudad) {
        this.ciudad = ciudad;
    }
*/
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getFechaNac() {
        return fechaNac;
    }

    public void setFechaNac(Date fechaNac) {
        this.fechaNac = fechaNac;
    }

    public Integer getNacion() {
        return nacion;
    }

    public void setNacion(Integer nacion) {
        this.nacion = nacion;
    }

    public String getNick() {
        return nick;
    }

    public void setNick(String nick) {
        this.nick = nick;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public List<SelectItem> getPaisSelect() {
        return paisSelect;
    }

    public void setPaisSelect(List<SelectItem> paisSelect) {
        this.paisSelect = paisSelect;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword_rep() {
        return password_rep;
    }

    public void setPassword_rep(String password_rep) {
        this.password_rep = password_rep;
    }
    /*
    public List<SelectItem> getProvSelect() {
        return provSelect;
    }

    public void setProvSelect(List<SelectItem> provSelect) {
        this.provSelect = provSelect;
    }
    
    public int getProvincia() {
        return provincia;
    }

    public void setProvincia(int provincia) {
        this.provincia = provincia;
    }
    */

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public UsuarioServiceLocal getUsuario() {
        return usuario;
    }

    public void setUsuario(UsuarioServiceLocal usuario) {
        this.usuario = usuario;
    }
    
    public boolean isShowDialog() {
        return showDialog;
    }

    public void setShowDialog(boolean showDialog) {
        this.showDialog = showDialog;
    }
        
    public void doRegistro(){
        int registro = usuario.creaUsuario(nick, password, nombre, email, 
                fechaNac, nacion, sexo);
        if (registro == 1){      
            createMessageError("form_registro:nick","nickoccupied");
        }
        else if(registro == 2){
            createMessageError("form_registro:email","emailoccupied");            
        }
        else{ 
            showDialog = true;            
        }
    }
    
    public void handleClose(CloseEvent event) {  
        try {
            showDialog = false;
            ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
            String ctxPath = ((ServletContext) extContext.getContext()).getContextPath();
            extContext.redirect(ctxPath + "/faces/index.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(UsuarioController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }  
   //@PostConstruct
 /*    public String goRegistro(){  
       
        provSelect = new ArrayList<SelectItem>();
        ArrayList <Provincias> provincias = usuario.getListaProvincias();
        for (int i=0; i<provincias.size(); i++){
            provSelect.add(new SelectItem(provincias.get(i).getIdProvincia(),
                    provincias.get(i).getProvincia()));
        }        
       
        
        return "registro";
    }
     */
    //@PostConstruct
    public void carga(){
        paisSelect = new ArrayList<SelectItem>();
        ArrayList <Paises> paises = usuario.getListaPaises();
        for (int i=0; i<paises.size(); i++){
            paisSelect.add(new SelectItem(paises.get(i).getIdPais(),
                    paises.get(i).getPais() + "" + paises.get(i).getIdPais()));
        }
    }
    
    public String goIndex(){
        return "index";
    }
}